<?php

class CommentController{

	public function doControll(LoginHandler $lHandler, Database $db){
		// de vi behöver
		$handler = new CommentHandler($db);
		$view = new CommentView();
		
		// användarnamnet som är inloggad

		// hämtar filnamnet 
		$fileName = FileUploadView::getFileName();
		$loggedInUserName = null;
		// om det blir fel så blir boolError true
		$boolError = false;
		$error = "";
		$ret = "";
		
		// Om man är inloggad
		if($lHandler->IsLoggedIn())
		{
			$loggedInUserName = $lHandler->GetLoggedInUserName();
			// Så ska de retunera form för kommentar
			$ret .= $view->commentForm($fileName);
			
			// Om man försökte ta bort kommentar
			if($view->TriedToDeleteComment()){
				// tar vi bort kommentaren där IDt är i url:en
				$handler->deleteComment($view->deleteID());
			}
			
			// Om man försöker kommentera
			if($view->TriedToComment()){
				// Kollar så inte det är tomt
				if($handler->commentIsEmpty($view->GetText())){
					$error .= $view->ErrorStatus(CommentView::COMMENT_IS_EMPTY);
					$boolError = true;
				}
				// Så det inte är för långt
				if($handler->commentLength($view->GetText())){
					$error .= $view->ErrorStatus(CommentView::COMMENT_TO_LONG);
					$boolError = true;
				}
				// Så det inte är nå HTML eller annat
				if($handler->noHTML($view->GetText()))
				{
					$error .= $view->ErrorStatus(CommentView::FORBIDDEN_LETTERS);
					$boolError = true;
				}
				// Om det inte är några fel
				if($boolError === false){
					// Så gör vi kommentar, där vi hämtar namn, filens-namn, och texten
					$handler->DoComment($lHandler->GetLoggedInUserName(), $fileName, $view->GetText());	
				}
				
			}
		}

		// hämtar alla kommentarer där filnamnet matchar
		$Comments = $handler->GetComment($fileName);
		// fastän man inte är inloggad så ska kommentarerna visas
		$ret .= $theComment = $view->FixComments($Comments, $loggedInUserName);
		
		return $ret .$error;
	}
}
